Texture mapping is a known technique in computer graphics for creating surface details on objects that greatly improves on the realism of their appearance. Generally, the technique involves mapping a two dimensional function or image (a texture) onto an object in three-dimensional object space and then projecting the resultant image back into two-dimensional screen space for display. The image that is mapped onto an object is called a texture map and its individual elements are often called texels. A texel's numerical value generally corresponds to an RGB color value and may also correspond to an alpha transparency value. However, it should be noted that other parameters can be included in the texture maps.
One of the factors determining performance of texture mapping is available texel bandwidth. Reducing the amount of data describing each texel is one approach to improve performance, beyond increasing clock speed and improving cache behavior. Reducing the amount of data associated with each texel can be accomplished by simply reducing the precision of color values. However, loss of color precision impacts the quality of the displayed images.
Another method to reduce the amount of data required to describe a texel is through the use of compression. However, many factors must be considered in selecting a compression/decompression scheme, e.g., lossy compression versus lossless compression, fixed compression ratio versus variable compression ratio, and so on. Generally, the application of compression to textures is applicable to those schemes that support direct/efficient addressing of arbitrary texels.
Therefore, a need exists for a novel method and apparatus that is capable of performing texture compression and decompression in texture mapping that will not reduce image quality while providing relatively high compression ratio.